package cn.com.dhcc.app.pub.core.util;

import java.lang.reflect.Field;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

import javax.jms.JMSException;

import oracle.sql.CHAR;

import cn.com.dhcc.app.core.util.JsonUtil;
import cn.com.dhcc.app.core.util.ReflectionUtils;
import cn.com.dhcc.turbo.entity.exch.QueueFileMsgWrapper;

import com.tongtech.jms.FileMessage;
import com.tongtech.tmqi.jmsclient.FileMessageImpl;



/**
 * TLQ文件消息处理工具类
 * @author Administrator
 *
 */
public class FileMessageUtil{

	/**
	/**
	 * 将对象的属性付给FileMessage,目前不支持继承关系的
	 * @throws JMSException 
	 * 将obj对象作为属性付给FileMessage
	 */
	public static void initObject(FileMessage msg,Object obj) throws JMSException{
		Field[] fs= obj.getClass().getDeclaredFields();
		if (fs!=null && fs.length>0) {
			for (int i = 0; i < fs.length; i++) {
				Field field = fs[i];
				Class<?> clz=field.getType();
				Object value=ReflectionUtils.getFieldValue(obj, field.getName());
				if (clz==String.class 
						|| clz==Boolean.class || clz==boolean.class 
						|| clz==CHAR.class || clz==char.class 
						|| clz==Integer.class || clz==Float.class 
						|| clz==Long.class || clz==long.class
						|| clz==Double.class || clz==double.class
						|| clz==Byte.class || clz==byte.class) {
					msg.setObjectProperty(field.getName(), value);
				}else if (clz==Date.class) {
					msg.setObjectProperty(field.getName(), new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((Date)value));
				}else{
					msg.setObjectProperty(field.getName(), value.toString());
				}
			}
		}
	}
	
	/**
	 *获取消息附带的数据
	 * @param msg
	 * @param clz
	 * @return
	 */
	public static <T> T getObject(FileMessage msg,Class<T> clz){
		Map<String,Object> pros=new HashMap<String,Object>();
		try {
			Enumeration<String> names=msg.getPropertyNames();//获取所有的属性
			if(names!=null){
				while (names.hasMoreElements()) {
					String name = (String) names.nextElement();
					pros.put(name, msg.getObjectProperty(name));
				}
			}
			pros.put("recvFilePath", msg.getFile());//接收文件存储的路径
		} catch (JMSException e) {
			e.printStackTrace();
		}
		
		return (T)JsonUtil.toObject(JsonUtil.toJson(pros), clz);
	}
	public static void main(String[] args) {
		System.out.println(Integer.class==int.class);
	}
}
